//
// Created by Administrator on 2025/10/23.
//

#ifndef CTEST_TEST12_H
#define CTEST_TEST12_H


#include <utility>
#include <string>
#include <iostream>

namespace T12 {


    class T12C1 {
    private:
        int a;

    public:
        T12C1() = default;

        void foo1(int &&t);

        void foo1(int &t);

        template<typename T>
        void process(T &&t) {
            this->foo1(std::forward<T>(t));
        }
    };

    void t11Foo1(int &a);

    void t11Foo1(int &&ss);

    void t11Foo2(int &a, int *b, int c);

//被fianl 修饰的类无法被继承
    class Test12C2 final {
    };

    class Test12C3 {

    };

    class Test12C4 : public Test12C3 {

    };

    class Test12C5 : public Test12C3 {

    };

    //虚继承在继承的父类同时又继承另一个基类时 菱形继承
    class Test12C6 : virtual public Test12C5, Test12C4 {

    };

    void t12Foo1(int ar[]);

    int *t12Foo2(int *a);

    struct T12Struct1 {
        char *name;
        int age;
    public:

        void foo1();
    };

    void t12Foo3();

    class T12C6 {
    private:
        std::string name;
    public:
        T12C6(std::initializer_list<int> c) {};

        void foo1();
    };


    void t12Foo4();

    void t12Foo5();

    void t12Foo6();

    class T12C7 {

    private:
        int a;

    public:
        explicit T12C7(int a): a(a) {}

        void foo1();
    };
}

#endif //CTEST_TEST12_H
